package org.apli.haiam.admin.jsf.report;

import com.apli.controladores.AplinfoFactoryBean;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.ResourceBundle;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.SelectItem;
import org.apli.haiam.admin.entidades.Rdacaa;
import org.apli.haiam.admin.entidades.UsuarioAdmin;
import org.apli.haiam.ejb.entidades.CexConsulta;
import org.apli.haiam.ejb.interfaces.AdministradorHaiam;
import org.apli.haiam.ejb.interfaces.ConsExternaAdministrador;
import org.apli.jsf.managed.JsfBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Clase backing Bean que administra la entidad CexConsulta.
 * <p>
 * <H6>Soporte:HAIAM
 * <I>david_s_1086@hotmail.com,david.carranza@haiam.gob.ec</I></H6>
 *
 * @author david Carranza
 * @version 1.0 30/07/2014
 */
@ManagedBean
@ViewScoped
public class JsfReporteAtenciones extends JsfBean<CexConsulta> {

    final Logger log = LoggerFactory.getLogger(JsfReporteAtenciones.class);
    protected ConsExternaAdministrador adminConsExt;
    private Date fechaInicio;
    private Date fechaFin;
    private List<Rdacaa> listaAtencion;
    private UsuarioAdmin usuarioAdmin;
    private static final String NAME_REPORTE = "RPT_ATENCIONES_DIARIAS.jasper";
    private static final String TIPO_REPORTE_PDF = "application/pdf";
    private static final String TIPO_REPORTE_XLS = "application/vnd.ms-excel";

    /**
     * Constructor por defecto.
     */
    public JsfReporteAtenciones() {
    }

    /**
     * Inicializa los datos miembros.
     */
    @Override
    protected void inicializar() {
        //setSwGrabar(false);
        object = new CexConsulta();
        fechaInicio = new Date();
        fechaFin = new Date();
        listaAtencion = new ArrayList<>();
        usuarioAdmin = (UsuarioAdmin) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user");
    }

    /**
     * envia la lista de datos para generar reporte en el formato espeficado.
     *
     */
    public void imprimirAtenciones() {
        if (object == null) {
            return;
        }
        try {

            Rdacaa objetoRdaca = new Rdacaa();
            listaAtencion.clear();
            lista = admin.listarOrdenada(CexConsulta.class, "ccoFecha", fechaInicio, "cexPreparacion.cexAgenda.cexHorariosDia.cexHorario.cexEspecialidadMedico.admMedico", usuarioAdmin.getUser().getAdmMedico(), "ccoEstado", 1, "ccoHora", true);
            for (CexConsulta objCon : lista) {
                /*DATOS ENCABEZADO*/
                //fecha de atencion
                //if (objetoRdaca.getFecha_atencion() == null) {
                objetoRdaca.setFecha_atencion(objCon.getCcoFecha());
                //}
                // nombres del medico
                //if (objetoRdaca.getNombres_full_profesional() == null) {
                objetoRdaca.setNombres_full_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeNombreFull());
                //}
                // especialidad del medico
                //if (objetoRdaca.getNombre_subespecialidad_profesional() == null) {
                objetoRdaca.setNombre_subespecialidad_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getCexEspecialidad().getCesNombre());
                //}
                // cedulaed del medico
                //if (objetoRdaca.getIdentificacion_profesional() == null) {
                objetoRdaca.setIdentificacion_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeCedula());
                //}
                // codigo msp del medico
                //if (objetoRdaca.getCodigo_msp_profesional() == null) {
                objetoRdaca.setCodigo_msp_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeCodigoMsp());
                //}
                // fecha de nacimiento del medico
                //if (objetoRdaca.getFecha_nacimiento_profesional() == null) {
                objetoRdaca.setFecha_nacimiento_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeFechaDeNacimiento());
                //}
                // formacion profesional del medico
                //if (objetoRdaca.getFormacion_profesional_profesional() == null) {
                objetoRdaca.setFormacion_profesional_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAdmFormacionProfesional().getAfpNombre());
                //}
                /*DATOS DETALLE*/
                //Nombre Completo
                objetoRdaca.setNombres_full(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcNombreFull());
                //Numero de cedula o pasaporte
                objetoRdaca.setIdentificacion_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcCedula() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcCedula() : objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcPasaporte());
                //fecha de nacimiento
                objetoRdaca.setFecha_nacimiento_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcFechaNacimiento());
                //edad 
                objetoRdaca.setEdad_anios_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcEdad());
                //Afiliado
                objetoRdaca.setAfiliacion_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexTipoSeguro().getCtsNombre());
                // parroquia
                objetoRdaca.setResidencia_parroquia_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica().getNombre());
                //Cie10A Prevencion Morbilidad
                if (objCon.getCexDiagnosticoConsultaList().size() >= 1) {
                    objetoRdaca.setCodigo_cie_a(objCon.getCexDiagnosticoConsultaList().get(0).getCexDiagnostico().getCdiCodigo());
                    objetoRdaca.setPrevencion_a(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(0).getDicPrevencion()).toString());
                    objetoRdaca.setMorbilidad_a(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(0).getDicMorbilidad()).toString());
                    if (objCon.getCexDiagnosticoConsultaList().get(0).getCexCondicionDiagnostico() != null) {
                        objetoRdaca.setCondicion_diagnostico_a(objCon.getCexDiagnosticoConsultaList().get(0).getCexCondicionDiagnostico().getCcdCodigo().toString());
                    }
                }
                //Cie10B 
                if (objCon.getCexDiagnosticoConsultaList().size() >= 2) {
                    objetoRdaca.setCodigo_cie_b(objCon.getCexDiagnosticoConsultaList().get(1).getCexDiagnostico().getCdiCodigo());
                    objetoRdaca.setPrevencion_b(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(1).getDicPrevencion()).toString());
                    objetoRdaca.setMorbilidad_b(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(1).getDicMorbilidad()).toString());
                    if (objCon.getCexDiagnosticoConsultaList().get(1).getCexCondicionDiagnostico() != null) {
                        objetoRdaca.setCondicion_diagnostico_b(objCon.getCexDiagnosticoConsultaList().get(1).getCexCondicionDiagnostico().getCcdCodigo().toString());

                    }
                }
                //Cie1C
                if (objCon.getCexDiagnosticoConsultaList().size() >= 3) {
                    objetoRdaca.setCodigo_cie_c(objCon.getCexDiagnosticoConsultaList().get(2).getCexDiagnostico().getCdiCodigo());
                    objetoRdaca.setPrevencion_c(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(2).getDicPrevencion()).toString());
                    objetoRdaca.setMorbilidad_c(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(2).getDicMorbilidad()).toString());
                    if (objCon.getCexDiagnosticoConsultaList().get(2).getCexCondicionDiagnostico() != null) {
                        objetoRdaca.setCondicion_diagnostico_c(objCon.getCexDiagnosticoConsultaList().get(2).getCexCondicionDiagnostico().getCcdCodigo().toString());
                    }
                }

                //Procedimientos y cantidad de procedimeintos
                if (objCon.getCexTratamientoConsultaList().size() >= 1) {
                    objetoRdaca.setProcedimiento1(objCon.getCexTratamientoConsultaList().get(0).getCexProcedimiento().getCprCodigo().toString());
                    objetoRdaca.setCantidad_procedimeinto1(objCon.getCexTratamientoConsultaList().get(0).getCptNumeroActividades() == null ? "" : objCon.getCexTratamientoConsultaList().get(0).getCptNumeroActividades().toString());
                }

                //Procedimientos y cantidad de procedimeintos
                if (objCon.getCexTratamientoConsultaList().size() >= 2) {
                    objetoRdaca.setProcedimiento2(objCon.getCexTratamientoConsultaList().get(1).getCexProcedimiento().getCprCodigo().toString());
                    objetoRdaca.setCantidad_procedimeinto2(objCon.getCexTratamientoConsultaList().get(1).getCptNumeroActividades() == null ? "" : objCon.getCexTratamientoConsultaList().get(1).getCptNumeroActividades().toString());
                }

                //Procedimientos y cantidad de procedimeintos
                if (objCon.getCexTratamientoConsultaList().size() >= 3) {
                    objetoRdaca.setProcedimiento3(objCon.getCexTratamientoConsultaList().get(2).getCexProcedimiento().getCprCodigo().toString());
                    objetoRdaca.setCantidad_procedimeinto3(objCon.getCexTratamientoConsultaList().get(2).getCptNumeroActividades() == null ? "" : objCon.getCexTratamientoConsultaList().get(2).getCptNumeroActividades().toString());
                }

                listaAtencion.add(objetoRdaca);
                objetoRdaca = new Rdacaa();

            }
            adminConsExt.generarReporte(listaAtencion, NAME_REPORTE, TIPO_REPORTE_PDF, "atenciones");
        } catch (Exception e) {
            log.error("imprimirProduccion(...) " + e);
        }

    }

    /**
     * envia la lista de datos para generar reporte en el formato espeficado.
     *
     */
    public void buscarRdacca() {
        if (object == null) {
            return;
        }
        try {

            Rdacaa objetoRdaca = new Rdacaa();
            listaAtencion.clear();
            //listaAtencion.clear();
            lista = admin.listarRango(CexConsulta.class, "cexPreparacion.cexAgenda.cagFecha", fechaInicio, fechaFin, "ccoEstado", 1);
            for (CexConsulta objCon : lista) {
                try {
                    /*DATOS ENCABEZADO*/
                    //fecha de atencion
                    try {
                        //if (objetoRdaca.getFecha_atencion() == null) {
                        objetoRdaca.setFecha_atencion(objCon.getCcoFecha());
                        //}
                    } catch (Exception e) {
                        log.error("fecha de atencion(...) " + e.getMessage());
                    }
                    //C'odigo profesional
                    try {
                        objetoRdaca.setId_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeId().toString());
                    } catch (Exception e) {
                        log.error("C'odigo profesional(...) " + e.getMessage());
                    }
//}
                    // nombres del medico
                    try {
                        //if (objetoRdaca.getNombres_full_profesional() == null) {
                        objetoRdaca.setNombres_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeNombre());
                        //}
                    } catch (Exception e) {
                        log.error("nombres del medico(...) " + e.getMessage());
                    }
                    // apellido del medico
                    try {
                        //if (objetoRdaca.getNombres_full_profesional() == null) {
                        objetoRdaca.setApellidos_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeApellido());
                        //}
                    } catch (Exception e) {
                        log.error("apellido del medico(...) " + e.getMessage());
                    }
                    // identificacion del medico
                    try {
                        //if (objetoRdaca.getIdentificacion_profesional() == null) {
                        objetoRdaca.setIdentificacion_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeCedula());
                        //}
                    } catch (Exception e) {
                        log.error("apellido del medico(...) " + e.getMessage());
                    }
                    // formacion profesional del medico
                    try {
                        //if (objetoRdaca.getFormacion_profesional_profesional() == null) {
                        objetoRdaca.setFormacion_profesional_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAdmFormacionProfesional().getAfpId().toString().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAdmFormacionProfesional().getAfpNombre()));
                        //}
                    } catch (Exception e) {
                        log.error("formacion profesional del medico(...) " + e.getMessage());
                    }
                    // especialidad del medico
                    try {
                        //if (objetoRdaca.getNombre_subespecialidad_profesional() == null) {
                        objetoRdaca.setNombre_subespecialidad_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getCexEspecialidad().getCesCodigo().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getCexEspecialidad().getCesNombre()));
                        //}
                    } catch (Exception e) {
                        log.error("especialidad del medico(...) " + e.getMessage());
                    }
                    // codigo msp del medico
                    try {
                        //if (objetoRdaca.getCodigo_msp_profesional() == null) {
                        objetoRdaca.setCodigo_msp_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeCodigoMsp());
                        //}
                    } catch (Exception e) {
                        log.error("codigo msp del medico(...) " + e.getMessage());
                    }
                    // genero del medico
                    try {
                        //if (objetoRdaca.getCodigo_msp_profesional() == null) {
                        objetoRdaca.setGenero_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeGenero() == 1 ? "1| - HOMBRE" : "2| - MUJER");
                        //}
                    } catch (Exception e) {
                        log.error("genero del medico(...) " + e.getMessage());
                    }
                    // fecha de nacimiento del medico
                    try {
                        //if (objetoRdaca.getFecha_nacimiento_profesional() == null) {
                        objetoRdaca.setFecha_nacimiento_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getAmeFechaDeNacimiento());
                        //}
                    } catch (Exception e) {
                        log.error("fecha de nacimiento del medico(...) " + e.getMessage());
                    }
                    //}
                    // Nacionalidad del medico
                    try {
                        //if (objetoRdaca.getFecha_nacimiento_profesional() == null) {
                        objetoRdaca.setNacionalidad_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getCexNacionalidad().getCnaId().toString().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getCexNacionalidad().getCnaNombre()));
                        //}
                    } catch (Exception e) {
                        log.error("Nacionalidad del medico(...) " + e.getMessage());
                    }
                    // Autoidentificacion del medico
                    try {
                        //if (objetoRdaca.getFecha_nacimiento_profesional() == null) {
                        objetoRdaca.setAutoidentificacion_profesional(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getCexGrupoCultural().getCgcCodigo().toString().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHorariosDia().getCexHorario().getCexEspecialidadMedico().getAdmMedico().getCexGrupoCultural().getDcuNombre()));
                        //}
                    } catch (Exception e) {
                        log.error("Autoidentificacion del medico(...) " + e.getMessage());
                    }
                    /*DATOS PACIENTE*/
                    //Nombre paciente
                    objetoRdaca.setNombres_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcPrimerNombre().concat(" ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcSegundoNombre()));
                    //Apellido paciente
                    objetoRdaca.setApellidos_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcApellidoPaterno().concat(" ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcApellidoMaterno()));
                    //Tipo Indentificacion
                    objetoRdaca.setTipo_identificacion_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcCedula() != null ? "CEDULA" : "HISTORIA_CLINICA");
                    //Indentificacion
                    objetoRdaca.setIdentificacion_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcCedula() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcCedula() : objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcHistoriaClinica());
                    //Genero
                    objetoRdaca.setGenero_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcGenero() == 1 ? "1| - HOMBRE" : "2| - MUJER");
                    //fecha de nacimiento
                    objetoRdaca.setFecha_nacimiento_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcFechaNacimiento());
                    //edad 
                    objetoRdaca.setEdad_anios_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcEdad());
                    // Nacionalidad
                    try {
                        //if (objetoRdaca.getFecha_nacimiento_profesional() == null) {
                        objetoRdaca.setNacionalidad_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexNacionalidad() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexNacionalidad().getCnaId().toString().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexNacionalidad().getCnaNombre()) : "1| - ECUATORIANA");
                        //}
                    } catch (Exception e) {
                        log.error("Nacionalidad(...) " + e.getMessage());
                    }
                    // Grupo cultural
                    try {
                        //if (objetoRdaca.getFecha_nacimiento_profesional() == null) {
                        objetoRdaca.setAutoidentificacion_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexGrupoCultural() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexGrupoCultural().getCgcCodigo().toString().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexGrupoCultural().getDcuNombre()) : "6| - MESTIZO/A");
                    } catch (Exception e) {
                        log.error("Grupo cultural(...) " + e.getMessage());
                    }
                    // parroquia
                    try {
                        objetoRdaca.setResidencia_parroquia_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica().getCodigo().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica().getNombre()): "170106| - COTOCOLLAO");
                    } catch (Exception e) {
                        log.error("parroquia(...) " + e.getMessage());
                    }
                    // canton
                    try {
                        objetoRdaca.setResidencia_canton_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica().getAdmDivisionPolitica().getCodigo().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica().getAdmDivisionPolitica().getNombre()):"1701| - QUITO");
                    } catch (Exception e) {
                        log.error("canton(...) " + e.getMessage());
                    }
                    // provincia
                    try {
                        objetoRdaca.setResidencia_provincia_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica().getAdmDivisionPolitica().getAdmDivisionPolitica().getCodigo().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getAdmDivisionPolitica().getAdmDivisionPolitica().getAdmDivisionPolitica().getNombre()):"17| - PICHINCHA");
                        //}   
                    } catch (Exception e) {
                        log.error("provincia(...) " + e.getMessage());
                    }
                    //barrio
                    objetoRdaca.setResidencia_barrio_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcBarrio());
                    //afiliacion
                    try {
                        objetoRdaca.setAfiliacion_paciente(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexTipoSeguro() != null ? objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexTipoSeguro().getCtsCodigo().toString().concat("| - ").concat(objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getCexTipoSeguro().getCtsNombre()) : "7| - NO APORTA");
                    } catch (Exception e) {
                        log.error("afiliacion(...) " + e.getMessage());
                    }
                    //Cie10A Prevencion Morbilidad
                    try {
                        if (objCon.getCexDiagnosticoConsultaList().size() >= 1) {
                            objetoRdaca.setCodigo_cie_a(objCon.getCexDiagnosticoConsultaList().get(0).getCexDiagnostico().getCdiCodigo().concat("| - ").concat(objCon.getCexDiagnosticoConsultaList().get(0).getCexDiagnostico().getCdiNombre()));
                            objetoRdaca.setPrevencion_a(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(0).getDicPrevencion()).intValue() == 1 ? "1| - PRIMERAS" : (new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(0).getDicPrevencion()).intValue() == 2 ? "2| - SUBSECUENTES" : "0| - NO APLICA"));
                            objetoRdaca.setMorbilidad_a(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(0).getDicMorbilidad()).intValue() == 1 ? "1| - PRIMERAS" : (new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(0).getDicMorbilidad()).intValue() == 2 ? "2| - SUBSECUENTES" : "0| - NO APLICA"));
                            if (objCon.getCexDiagnosticoConsultaList().get(0).getCexCondicionDiagnostico() != null) {
                                objetoRdaca.setCondicion_diagnostico_a(objCon.getCexDiagnosticoConsultaList().get(0).getCexCondicionDiagnostico().getCcdCodigo().toString().concat("| - ").concat(objCon.getCexDiagnosticoConsultaList().get(0).getCexCondicionDiagnostico().getCcdNombre()));
                            }
                        } else {
                            objetoRdaca.setCodigo_cie_a("0| - NO APLICA");
                        }
                    } catch (Exception e) {
                        log.error("Cie10A(...) " + e.getMessage());
                    }
                    //Cie10B 
                    try {
                        if (objCon.getCexDiagnosticoConsultaList().size() >= 2) {
                            objetoRdaca.setCodigo_cie_b(objCon.getCexDiagnosticoConsultaList().get(1).getCexDiagnostico().getCdiCodigo().concat("| - ").concat(objCon.getCexDiagnosticoConsultaList().get(1).getCexDiagnostico().getCdiNombre()));
                            objetoRdaca.setPrevencion_b(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(1).getDicPrevencion()).intValue() == 1 ? "1| - PRIMERAS" : (new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(1).getDicPrevencion()).intValue() == 2 ? "2| - SUBSECUENTES" : "0| - NO APLICA"));
                            objetoRdaca.setMorbilidad_b(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(1).getDicMorbilidad()).intValue() == 1 ? "1| - PRIMERAS" : (new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(1).getDicMorbilidad()).intValue() == 2 ? "2| - SUBSECUENTES" : "0| - NO APLICA"));
                            if (objCon.getCexDiagnosticoConsultaList().get(1).getCexCondicionDiagnostico() != null) {
                                objetoRdaca.setCondicion_diagnostico_b(objCon.getCexDiagnosticoConsultaList().get(1).getCexCondicionDiagnostico().getCcdCodigo().toString().concat("| - ").concat(objCon.getCexDiagnosticoConsultaList().get(1).getCexCondicionDiagnostico().getCcdNombre()));
                            }
                        } else {
                            objetoRdaca.setCodigo_cie_b("0| - NO APLICA");
                        }
                    } catch (Exception e) {
                        log.error("Cie10B(...) " + e.getMessage());
                    }
                    //Cie1C
                    try {
                        if (objCon.getCexDiagnosticoConsultaList().size() >= 3) {
                            objetoRdaca.setCodigo_cie_c(objCon.getCexDiagnosticoConsultaList().get(2).getCexDiagnostico().getCdiCodigo().concat("| - ").concat(objCon.getCexDiagnosticoConsultaList().get(2).getCexDiagnostico().getCdiNombre()));
                            objetoRdaca.setPrevencion_c(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(2).getDicPrevencion()).intValue() == 1 ? "1| - PRIMERAS" : (new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(2).getDicPrevencion()).intValue() == 2 ? "2| - SUBSECUENTES" : "0| - NO APLICA"));
                            objetoRdaca.setMorbilidad_c(new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(2).getDicMorbilidad()).intValue() == 1 ? "1| - PRIMERAS" : (new BigDecimal(objCon.getCexDiagnosticoConsultaList().get(2).getDicMorbilidad()).intValue() == 2 ? "2| - SUBSECUENTES" : "0| - NO APLICA"));
                            if (objCon.getCexDiagnosticoConsultaList().get(2).getCexCondicionDiagnostico() != null) {
                                objetoRdaca.setCondicion_diagnostico_c(objCon.getCexDiagnosticoConsultaList().get(2).getCexCondicionDiagnostico().getCcdCodigo().toString().concat("| - ").concat(objCon.getCexDiagnosticoConsultaList().get(2).getCexCondicionDiagnostico().getCcdNombre()));
                            }
                        } else {
                            objetoRdaca.setCodigo_cie_c("0| - NO APLICA");
                        }
                    } catch (Exception e) {
                        log.error("Cie1C(...) " + e.getMessage());
                    }
                    //Procedimientos y cantidad de procedimeintos
                    try {
                        if (objCon.getCexTratamientoConsultaList().size() >= 1) {
                            objetoRdaca.setProcedimiento1(objCon.getCexTratamientoConsultaList().get(0).getCexProcedimiento() != null ? objCon.getCexTratamientoConsultaList().get(0).getCexProcedimiento().getCprCodigo().toString().concat("| - ").concat(objCon.getCexTratamientoConsultaList().get(0).getCexProcedimiento().getCprNombre()) : "0| - NO APLICA");
                            objetoRdaca.setCantidad_procedimeinto1(objCon.getCexTratamientoConsultaList().get(0).getCptNumeroActividades() == null ? "0" : objCon.getCexTratamientoConsultaList().get(0).getCptNumeroActividades().toString());
                        }
                    } catch (Exception e) {
                        log.error("Procedimientos 1(...) " + e.getMessage());
                    }
                    //Procedimientos y cantidad de procedimeintos
                    try {
                        if (objCon.getCexTratamientoConsultaList().size() >= 2) {
                            objetoRdaca.setProcedimiento2(objCon.getCexTratamientoConsultaList().get(1).getCexProcedimiento() != null ? objCon.getCexTratamientoConsultaList().get(1).getCexProcedimiento().getCprCodigo().toString().concat("| - ").concat(objCon.getCexTratamientoConsultaList().get(1).getCexProcedimiento().getCprNombre()) : "0| - NO APLICA");
                            objetoRdaca.setCantidad_procedimeinto2(objCon.getCexTratamientoConsultaList().get(1).getCptNumeroActividades() == null ? "0" : objCon.getCexTratamientoConsultaList().get(1).getCptNumeroActividades().toString());
                        }
                    } catch (Exception e) {
                        log.error("Procedimientos 2(...) " + e.getMessage());
                    }
                    //Procedimientos y cantidad de procedimeintos
                    try {
                        if (objCon.getCexTratamientoConsultaList().size() >= 3) {
                            objetoRdaca.setProcedimiento3(objCon.getCexTratamientoConsultaList().get(2).getCexProcedimiento() != null ? objCon.getCexTratamientoConsultaList().get(2).getCexProcedimiento().getCprCodigo().toString().concat("| - ").concat(objCon.getCexTratamientoConsultaList().get(2).getCexProcedimiento().getCprNombre()) : "0| - NO APLICA");
                            objetoRdaca.setCantidad_procedimeinto3(objCon.getCexTratamientoConsultaList().get(2).getCptNumeroActividades() == null ? "0" : objCon.getCexTratamientoConsultaList().get(2).getCptNumeroActividades().toString());
                        }
                    } catch (Exception e) {
                        log.error("Procedimientos 3(...) " + e.getMessage());
                    }
                    //Referencia
                    try {
                        objetoRdaca.setReferencia_contrareferencia(objCon.getCcoPeriodicidad() == 1 ? "1| - REFERENCIA" : (objCon.getCcoPeriodicidad() == 2 ? "2| - CONTRAREFERENCIA" : "0| - NO APLICA"));
                    } catch (Exception e) {
                        log.error("Referencia(...) " + e.getMessage());
                    }
                    //Interconsulta
                    try {
                        objetoRdaca.setInterConsulta(objCon.getCcoTipoConsulta() == 1 ? "1| - INTERCONSULTA SOLICITADA" : (objCon.getCcoTipoConsulta() == 2 ? "2| - INTERCONSULTA RECIBIDA" : "0| - NO APLICA"));
                    } catch (Exception e) {
                        log.error("Interconsulta(...) " + e.getMessage());
                    }
                    listaAtencion.add(objetoRdaca);
                    objetoRdaca = new Rdacaa();
                } catch (Exception e) {
                    log.error("Error rdacca(...) " + " IdConsulta " + objCon.getCcoId() + 
                            "Historia " + objCon.getCexPreparacion().getCexAgenda().getCexHistoriaClinica().getChcHistoriaClinica()+
                            "Fecha " + objCon.getCcoFecha());
                }
            }
            //adminConsExt.generarReporte(listaAtencion, NAME_REPORTE, TIPO_REPORTE_PDF, "atenciones");
        } catch (Exception e) {
            log.error("imprimirProduccion(...) " + e);
        }

    }

    /**
     * Graba el registro asociado al objeto que se administra en la página.
     *
     * @return null, se mantiene en la página invocada.
     */
    @Override
    public String grabarAction() {
        return null;
    }

////////////    public void migrarAntecedentes() {
////////////        try {
////////////            List<CexConsulta> listaConsulta;
////////////            CexConsulta consulta;
////////////            List<CexAntecedentesPatologicos> listaAnte = adminObject.listar(CexAntecedentesPatologicos.class);
////////////            for (CexAntecedentesPatologicos objAnt : listaAnte) {
////////////                listaConsulta = adminObject.listarOrdenada(CexConsulta.class, "cexPreparacion.cexAgenda.cexHistoriaClinica", objAnt.getCexHistoriaClinica(), "ccoFecha",true);
////////////                consulta = listaConsulta.get(0);
////////////
////////////                objAnt.setCexConsulta(consulta);
////////////
////////////                adminObject.modificar(objAnt, (UsuarioAdmin) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"));
////////////                objAnt = new CexAntecedentesPatologicos();
////////////
////////////            }
////////////        } catch (Exception e) {
////////////            log.error("{}: {} ", "migrarAntecedentes", e);
////////////        }
////////////    }
////////////    
////////////    public void migrarFamiliares() {
////////////        try {
////////////            List<CexConsulta> listaConsulta;
////////////            CexConsulta consulta;
////////////            List<CexAntecedentesFamiliares> listaAnte = adminObject.listar(CexAntecedentesFamiliares.class);
////////////            for (CexAntecedentesFamiliares objAnt : listaAnte) {
////////////                listaConsulta = adminObject.listarOrdenada(CexConsulta.class, "cexPreparacion.cexAgenda.cexHistoriaClinica", objAnt.getCexHistoriaClinica(), "ccoFecha",true);
////////////                consulta = listaConsulta.get(0);
////////////
////////////                objAnt.setCexConsulta(consulta);
////////////
////////////                adminObject.modificar(objAnt, (UsuarioAdmin) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"));
////////////                objAnt = new CexAntecedentesFamiliares();
////////////
////////////            }
////////////        } catch (Exception e) {
////////////            log.error("{}: {} ", "migrarFamiliares", e);
////////////        }
////////////    }
////////////    
////////////    public void migrarOrganos() {
////////////        try {
////////////            List<CexConsulta> listaConsulta;
////////////            CexConsulta consulta;
////////////            List<CexRevisionOrganos> listaAnte = adminObject.listar(CexRevisionOrganos.class);
////////////            for (CexRevisionOrganos objAnt : listaAnte) {
////////////                listaConsulta = adminObject.listarOrdenada(CexConsulta.class, "cexPreparacion.cexAgenda.cexHistoriaClinica", objAnt.getCexHistoriaClinica(), "ccoFecha",true);
////////////                consulta = listaConsulta.get(0);
////////////
////////////                objAnt.setCexConsulta(consulta);
////////////
////////////                adminObject.modificar(objAnt, (UsuarioAdmin) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"));
////////////                objAnt = new CexRevisionOrganos();
////////////
////////////            }
////////////        } catch (Exception e) {
////////////            log.error("{}: {} ", "migrarFamiliares", e);
////////////        }
////////////    }
    /**
     * Carga la lista de objetos en una lista de la página.
     */
    @Override
    public void cargarLista() {
        String nombreMetodo = Thread.currentThread().getStackTrace()[1].getMethodName() + "()";
        if (admin == null) {
            lista = null;
            return;
        }
        try {

        } catch (Exception e) {
            log.error("{}: {} ", nombreMetodo, e);
        }
    }

    /**
     * Obtiene el objeto remoto.
     */
    @Override
    protected void cargarEjb() {
        String nombreMetodo = Thread.currentThread().getStackTrace()[1].getMethodName() + "()";
        if (adminConsExt == null) {
            String ejbPath = null;
            try {
                ResourceBundle property = getProperties();
                String ORBContext = property.getString("ORBContext");
                String ejbContextPath = property.getString("ejb.context.path.ConsExterna");
                ejbPath = ORBContext + ejbContextPath + "/ConsExternaAdministradorBean";
                adminConsExt = (ConsExternaAdministrador) AplinfoFactoryBean.lookupBean(ejbPath, false);
            } catch (Exception e) {
                log.error("{}: {} - {} ", new Object[]{nombreMetodo, ejbPath, e});
            }
        }
        if (adminObject == null) {
            String ejbPath = null;
            try {
                ResourceBundle property = getProperties();
                String ORBContext = property.getString("ORBContext");
                String ejbContextPath = property.getString("ejb.context.path.admin");
                ejbPath = ORBContext + ejbContextPath + "/AdministradorBeanHaiam";
                adminObject = (AdministradorHaiam) AplinfoFactoryBean.lookupBean(ejbPath, false);
            } catch (Exception e) {
                log.error("{}: {} - {} ", new Object[]{nombreMetodo, ejbPath, e});
            }
        }
    }

    /**
     * Obtiene una lista de objetos de tipo SelectedItem.
     *
     * @return la lista
     */
    @Override
    public List<SelectItem> getSelectedItem() {
        try {
//////////            List<CexPueblo> datosS = admin.listarOrdenada(object.getClass(), "cpuNombre", true);
//////////            // datos = admin.listarNullOrdenada(object.getClass(), "cexEspecialidad","espEstado",1, "espNombre", true);
            List<SelectItem> items = new ArrayList<>();
//////////            for (CexPueblo obj : datosS) {
//////////                items.add(new SelectItem(obj, obj.getCpuNombre()));
//////////            }
            return items;
        } catch (Exception e) {
            log.error("getSelectedItem() {} ", e.getMessage());
        }
        return null;
    }

    @Override
    public DataModel<CexConsulta> getDataModel() {
        return null;
    }

    @Override
    protected ResourceBundle getProperties() {
        return ResourceBundle.getBundle("aplicacion");
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public List<Rdacaa> getListaAtencion() {
        return listaAtencion;
    }

    public void setListaAtencion(List<Rdacaa> listaAtencion) {
        this.listaAtencion = listaAtencion;
    }

}
